/*
 * Projeto Destinado a Prefeitura de Goiânia.
 * Projeto de Modernização do Arquitetura de Desenvolvimento de Software.
 * Todos os Direitos Reservados.
 */

package br.com.prefeitura.goiania.orcamento.negocio;

import br.com.prefeitura.goiania.orcamento.entidade.Usuario;
import br.com.prefeitura.goiania.orcamento.excecao.*;
import br.com.prefeitura.goiania.orcamento.persistencia.UsuarioDAO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class UsuarioNegocio {

    @Autowired
    private UsuarioDAO dao;

    public Usuario autenticar(final Usuario usuario) throws InfraExcecao, ValorNaoInformadoExcecao, UsuarioNaoEncontradoExcecao,  SenhaNaoConfereExcecao {

        Usuario retorno;

        if(usuario == null){
            throw new ValorNaoInformadoExcecao("Usuário");
        }

        if(usuario.getMatricula() == null || usuario.getMatricula().isEmpty()){
            throw new ValorNaoInformadoExcecao("Matrícula");
        }

        if(usuario.getSenha() == null || usuario.getSenha().isEmpty() ){
            throw new ValorNaoInformadoExcecao("Senha");
        }

        retorno = dao.obterPorMatricula(usuario.getMatricula());

        if(retorno == null){
            throw new UsuarioNaoEncontradoExcecao(usuario.getMatricula());
        }

        if(!retorno.getSenha().equals(usuario.getSenha())){  //TODO: Melhorar e colocar senha criptografada
            throw new SenhaNaoConfereExcecao();
        }

        return retorno;

    }

}
